#include <stdio.h>
//给你一个非负整数 x ，计算并返回 x 的 算术平方根 。
//由于返回类型是整数，结果只保留 整数部分 ，小数部分将被 舍去 。
//注意：不允许使用任何内置指数函数和算符，例如 pow(x, 0.5) 或者 x ** 0.5 。
int mySqrt(int x) 
{
    int left,right;
    left=1;
    right=x/2;
    int mid;
    if(x==1)
    {
        return 1;
    }
    while(left<=right)
    {
        mid=(left+right)/2;
        if(mid==x / mid && x % mid==0)
        {
            return mid;
        }
        else if(mid<=x/mid)
        {
            left=mid+1;
        }
        else
        {
            right=mid-1;
        }
    }
    return left-1;


    // long i = 0;
    // while(i*i<=x)
    // {
    //     i++;
    // }
    // return i-1;
}

int main()
{
    int a = 5;
    printf("%d\n",mySqrt(a));
}